package  
{
	import flash.display.Bitmap;
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import heros_marche_fla.PlayerAnimationJumping_16;
	import heros_marche_fla.PlayerAnimationRunning_15;
	/**
	 * ...
	 * @author Team Izanami
	 */
	public class Heros extends Sprite
	{

		

		
		private var herosTest:MovieClip;
		private var heros_anim_course:MovieClip;
		private var positionNonRelative:int; // Position du héros sur l'axe x qui est modifié, même lorsque l'on fait se déplacer la caméra
		private var isIdle:Boolean = true;
		private var anim_actuel:String = "idle";
		private var posX:int;
		private var posY:int;
		private var largeur_heros:int = new int();
		private var vitesse_heros:int = 3;
		private var vitesse_de_base:int = 3; // Valeur de sécurité, à modifier que si l'on fait un changement de vitesse définitif
		
		public function Heros() 
		{
			heros_anim_course = new PlayerAnimationRunning_15();
			herosTest = heros_anim_course;
			largeur_heros = herosTest.width;
			addChild (herosTest);
			herosTest.x = 00;
			posX = 00;
			positionNonRelative = 0;
			herosTest.y = 00;
			posY = 00;
		}
		
		public function returnX():int
		{
			return herosTest.x;
		}
		
		public function returnVitesse():int
		{
			return vitesse_heros;
		}
		
		public function modifX(new_position:int):void
		{
			if (new_position < 0)
			{
				herosTest.x = 0;
				posX = 0;
			}
			else
			{
				herosTest.x = new_position;
				posX = new_position;
			}
		}
		
		public function returnY():int
		{
			return herosTest.y;
		}
		
		public function changeY(nouv:int):void
		{
			herosTest.y = nouv;
			posY = nouv;
		}
		
		public function returnXNonRelative():int 
		{
			return positionNonRelative;
		}
		
		public function changeXNonRelative(nouv:int):void
		{
			if (nouv < 0)
			positionNonRelative = 0;
			else
			positionNonRelative = nouv;
		}
		
		public function estEnCollision(xMin:int, xMax:int, hauteur:int):Boolean // est en collision avec une plateforme
		{
			if ( ((positionNonRelative) >= xMin) && (positionNonRelative <= xMax) && (herosTest.y >= (hauteur - 10)) && (herosTest.y <= (hauteur + 10)) )
			{
				return true;
			}
			else
				return false;
		}
		
		
		public function estEnCollisionMurale(yMin:int, yMax:int, hauteur:int):Boolean // est en collision avec une plateforme
		{
			if ( ((herosTest.y) >= yMin) && (herosTest.y <= yMax) && (positionNonRelative >= (hauteur - 10)) && (positionNonRelative <= (hauteur + 10)) )
			{
				return true;
			}
			else
				return false;
		}
		
		public function setAnim(nom:String, Flip:Boolean):void
		{
			if (nom == "marche" && anim_actuel != "marche")
			{
				removeChild(herosTest);
				herosTest = heros_anim_course;
				herosTest.gotoAndPlay(21);
				herosTest.x = posX;
				herosTest.y = posY;
				herosTest.stop();
				anim_actuel = "marche";
				addChild(herosTest);
			}
			else if (nom == "idle" && anim_actuel != "idle")
			{
				removeChild(herosTest);
				herosTest = heros_anim_course;
				herosTest.gotoAndPlay(1);
				herosTest.x = posX;
				herosTest.y = posY;
				anim_actuel = "idle";
				addChild(herosTest);
			}
			
			if (Flip)
			{
				heros_anim_course.scaleX *= -1;
			}
			
		}
		
		public function setidle(isOn:Boolean):void // Utilité?
		{
			isIdle = isOn;
		}
		
		public function bonneDistanceGrip(GposX:int, GposY:int):Boolean // Renvoie True si le joueur est à moins de 50 px du grip, false sinon
		{
			var dx:Number = GposX-positionNonRelative;
			var dy:Number = GposY-posY;
			var dfin:Number = Math.sqrt(dx * dx + dy * dy); // Pythagore: distance entre la pos du joueur et celle du grip
			
			if (dfin <= 50)
			return true;
			else
			return false;
		}
		
		public function modifVitesse(new_vitesse:int):void
		{
			vitesse_heros = new_vitesse;
		}
		
		public function resetVitesse():void
		{
			vitesse_heros = vitesse_de_base;
		}
	}

}

